home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1997 February / EnigmA AMIGA RUN 15 (1997)(G.R. Edizioni)(IT)[!][issue 1997-02][PLANET CD V].iso / enigma / earcd / comm / comm5 / nwsbrkr5.lha / Reader / NewsBreaker / experimental / Source / Dynamisches_Menusystem.c
C/C++ Source or Header  |  1996-09-20  |  2KB  |  49 lines

  1.  
  2.  
  3. /**********************************************************************
  4.                                 modulsystem
  5.  **********************************************************************/
  6.  
  7.  
  8.  
  9. // später wird hieraus Gadtools NewMenu dynamisch erzeugt, um customized
  10. //   Menüs anbieten zu können:
  11.  
  12. /* User soll eigene Menüpunkte definieren können, hinter denen sich */
  13. /* Rexx-Scripte, CLI-Kommandos, Newsbreaker-Module oder ähnliches verbergen. */
  14.  
  15. /* Eines Tages wird diese Routine verschwinden                  */
  16. /*   und alle Funktionen werden dynamisch aufgerufen            */
  17. /*   über ihre Adresse. Vorteil: EIN  lowlevel-Interface        */
  18. /*   für Menüsystem, Messages, ARexx, wasweißich ... möglich!   */
  19.  
  20. /*   Problem: wie springe ich eine Funktion dynamisch an?       */
  21. // Callback:
  22. /*   siehe dazu die LISTSORT-Sortiersubroutine                  */
  23.  
  24.  
  25. /* Wäre schön einfach: Sprungadressen der Module gleich in NewMenu */
  26. /* So auf switch verzichtet werden kann in DoMenus. Wie geht das?  */
  27.  
  28.  
  29. struct Modul {
  30.         UBYTE    mod_ID;            /* Eindeutige Schlüssel-Nummer des Befehls-Moduls */
  31.         char    mod_DefComKey;    /* Default Command Key für Menu */
  32.         char    *mod_Name;        /* Informativer Name vom Modul, z.B. "Öffnen" */
  33.         char    *mod_Hilfe;        /* kurzer Hilfstext */
  34.         char    *mod_HelpLink;    /* Weitergehende Hilfe, Link zu AmigaGuide-Dokument-Seite */
  35.     };
  36.  
  37. struct Men2Mod {    // zum Mappen von MenuNum und Modul
  38.         ULONG    MenuNum;            /* Intuition-Menünummer für NewMenu */
  39.         UBYTE    ModID;                /* das dazugehörige Befehlsmodul */
  40.     };
  41.  
  42. static struct Modul     ModulListe[] = {
  43.         { 1,    'o',    "Öffnen",    "Öffnet eine Datei",         NULL },
  44.         { 2,    'q',    "Ende",        "Beendet dieses Programm",     NULL },
  45.         { 3,    'm',    "Gruppe",    "Wählt eine Gruppe",        NULL }
  46.     };
  47.  
  48.  
  49.